03. `flags` y bitfields
flags empaqueta campos booleanos o bitfields dentro de un entero base:
flags Permissions uint8:
read: uBint<1> = 0
write: uBint<1> = 0
reserved: uBint<6> = 0
func can_write(value: Permissions) bool:
return value.write == 1
La suma de anchos debe coincidir exactamente con la base. Los campos pueden ser
uBint<N>, Bint<N> o bool; un campo no tiene dirección independiente, por
lo que $value.write es inválido.
El orden predeterminado es LSB. Para protocolos que numeran desde el extremo
más significativo se usa @order_msb:
@order_msb
flags NetworkBits uint8:
version: uBint<3> = 0
kind: uBint<5> = 0
@order_lsb no existe: era un alias redundante del valor predeterminado.